package com.itheima.stock.api;

import com.itheima.stock.entity.StockBusiness;
import com.itheima.stock.response.PageResult;
import com.itheima.stock.response.ResponseResult;
import com.itheima.stock.vo.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * @author 28188
 */
@RequestMapping(path = "/api/quot")
public interface StockControllerAPI {

    /**
     * 获取股票业务数据
     *
     * @return List
     */
    @GetMapping(path = "/stock/business/all")
    ResponseResult<List<StockBusiness>> getStockBusiness();

    /**
     * 获取国内大盘的实时数据
     *
     * @return List
     */
    @GetMapping("/index/all")
    ResponseResult<List<InnerMarketVO>> innerIndexAll();

    /**
     * 获取板块数据
     *
     * @return List
     */
    @GetMapping("/sector/all")
    ResponseResult<List<SectorAllVO>> sectorAll();

    /**
     * 沪深两市个股涨幅分时行情数据查询，以时间顺序和涨幅查询前10条数据
     *
     * @return List
     */
    @GetMapping("/stock/increase")
    ResponseResult<List<IncreaseVO>> stockIncreaseLimit();

    /**
     * 沪深两市个股行情列表查询 ,以时间顺序和涨幅分页查询
     *
     * @param page     当前页
     * @param pageSize 每页大小
     * @return PageResult
     */
    @GetMapping("/stock/all")
    ResponseResult<PageResult<IncreaseVO>> stockPage(@RequestParam("page") Integer page, @RequestParam("pageSize") Integer pageSize);

    /**
     * 功能描述：沪深两市涨跌停分时行情数据查询，查询T日每分钟的涨跌停数据（T：当前股票交易日）
     * 查询每分钟的涨停和跌停的数据的同级；
     * 如果不在股票的交易日内，那么就统计最近的股票交易下的数据
     * map:
     * upList:涨停数据统计
     * downList:跌停数据统计
     *
     * @return Map
     */
    @GetMapping("/stock/updown/count")
    ResponseResult<UpDownCountVO<OptionVO>> upDownCount();

    /**
     * 功能描述：统计国内A股大盘T日和T-1日成交量对比功能（成交量为沪市和深市成交量之和）
     *   map结构示例：
     *      {
     *         "volList": [{"count": 3926392,"time": "202112310930"},......],
     *       "yesVolList":[{"count": 3926392,"time": "202112310930"},......]
     *      }
     * @return Map
     */
    @GetMapping("/stock/tradevol")
    ResponseResult<TradingVolumeVO<OptionVO>> stockTradeVol4InnerMarket();

    /**
     * 查询当前时间下股票的涨跌幅度区间统计功能
     * 如果当前日期不在有效时间内，则以最近的一个股票交易时间作为查询点
     * @return
     */
    @GetMapping("/stock/updown")
    ResponseResult<UpDownAreaVO> getStockUpDown();

    /**
     * 功能描述：查询单个个股的分时行情数据，也就是统计指定股票T日每分钟的交易数据；
     *         如果当前日期不在有效时间内，则以最近的一个股票交易时间作为查询时间点
     * @param code 股票编码
     * @return
     */
    @GetMapping("/stock/screen/time-sharing")
    public ResponseResult<List<Stock4MinuteDomain>> stockScreenTimeSharing(String code);

    /**
     * 单个个股日K 数据查询 ，可以根据时间区间查询数日的K线数据
     * @param stockCode 股票编码
     */
    @RequestMapping("/stock/screen/dkline")
    public ResponseResult<List<Stock4EvrDayDomain>> getDayKLinData(@RequestParam("code") String stockCode);

}
